In the classic computer model, computer hardware executes operating system software and application software. The computer hardware includes components like Central Processing Units (CPUs), data memories, Input/Output (I/O) transceivers, and user interfaces. The CPUs execute the operating system to control the computer hardware. The applications execute on the CPUs to interact with the operating system, and the operating system controls the computer hardware for the applications.
A virtualization layer was introduced to free the interface between the computer hardware and the application software. The virtual layer may interact with a variety of operating systems that support numerous software applications. The virtual layer also interacts with a variety of computer hardware. In many virtualization examples, custom applications interact with the virtualization layer to deploy specialized data communication services over a host of general-purpose servers that offer both high-performance and cost-effectiveness. In some virtual environments, hypervisors provide the virtual layer to the operating systems, and in other virtual environments, the operating systems implement containers to support the applications.
Data communication networks have also been virtualized. Before virtualization, data communication networks were comprised of interconnected network elements, such as data switches linked by cabling. An exemplary data communication protocol is Ethernet as described in Institute of Electrical and Electronics Engineers (IEEE) standard 802.3. An Ethernet Local Area Network (LAN) exchanges Ethernet frames that transport user data. The Ethernet frames have Ethernet headers that indicate network addressing and metadata. Ethernet switches interpret the headers to switch Ethernet frames between the Ethernet ports.
Ethernet has been enhanced with Virtual LAN (VLAN) technology as described in IEEE standard 802.1Q. Ethernet VLAN inserts a VLAN Identifier (ID) into the existing Ethernet header. Ethernet switches interpret VLAN IDs to isolate network segments or “broadcast” domains. VLAN allows endpoints to be arbitrarily assigned to the broadcast domain based on the VLAN ID and not the physical location. Ethernet VLAN was further developed with Ethernet VLAN QinQ technology described in IEEE standard 802.1ad. Ethernet VLAN QinQ allows multiple VLAN IDs to be inserted in an existing Ethernet frame to support in-frame Ethernet VLAN multiplexing.
To support Ethernet in virtualized networking environments, Virtual Extensible LAN (VXLAN) was created. VXLAN is described in Internet Engineering Task Force (IETF) Request For Comment (RFC) 7348. VXLAN encapsulates an Ethernet frame in a Layer four packet that has a separate VXLAN header. The VXLAN header specifies a virtual tunnel for the Ethernet traffic. Moreover, a VXLAN header may identify a virtual tunnel for a group of multiplexed Ethernet VLANs.
Specialized control and user plane functions that are used within the construct of mobile and wireline services are also being virtualized. The virtualization of network functions is referred to Network Function Virtualization (NFV), while the individual Virtual Network Functions are referred to as VNFs. An overall platform approach to NFV is described in European Telecommunication Standards Institute (ETSI) NFV publications. An NFV Infrastructure (NFVI) platform at the simplest level implements general-purpose computer hardware and virtualization software or containers. The virtualization software includes a hypervisor that has a virtual switch. The virtual switches interface with the VNFs.
VNFs comprise networking software that is executed by the computer hardware under virtual layer control. The NFVI platform hosts and manages the VNFs to deliver data communication services to external data machines. Many data communication services require a set of VNFs to process individual user data packets. This set of VNFs is called a Service Function Chain (SFC). For example, one VNF may filter the user data packet for parental control while another VNF translates network addressing in the user data packet.
When a user data packet initially enters a virtual service construct, a VNF uses service policy to classify the user data packet for service chain processing. The classifier then encodes information specifying the target VNFs to be used in the SFC chain and forwards the user data packet to the first VNF in the selected SFC. The VNFs in the SFC process the user data packets sequentially, as specified in the SFC VNF order. The VNFs use the overlay network virtualization layer to forward the user data packets from one VNF to the other per the unique sequential order. When the VNFs in the SFC complete their tasks, the virtual layer may forward the processed user data packet to an outbound next hop in the virtual or non-virtual switched or routed network domain.
The use of a Network Services Header (NSH) has been previously introduced to facilitate the use of Service Function Chaining and related Metadata transport and insertion. NSH is described by IETF-SFC-NSH working group publications. The NSH is inserted between the VXLAN header and the Ethernet frame. The NSH carries service data like SFC ID and SFC metadata. The SFC metadata may comprise VNF counts, user data formats, user data applications, user Quality-of-Service (QoS) levels, and the like. The VNFs and virtual switches use the NSH data to process the user data packets. For example, a VNF may determine that a user data packet is related to a special user application that should receive a better QoS level. The VNF can modify the QoS level within the NSH to improve the subsequent QoS applied to the user data packet by the VNFs in the SFC.
The NSH adds a significant amount of overhead data on a per-packet basis. The NSH also consumes user data space and consumes valuable network resources.